package 贪心;

import java.util.PriorityQueue;

/**
 * 题目描述：
 * costs[i] 表示 第 i 个项目的 cost
 * prifit[i] 表示 第i 个项目的 纯利润!
 * k 表示 能选择的 项目的个数
 * capital : 当前手里的资金(  当 capital >= cost[i] 的时候才能 启动  i 项目) 
 * 返回结果: 最大收益 
 * 贪心 方法 最优解:
 * 但是 暴力方法 :
 * 好像是  全排列 这种方式
 *  暴力递归怎么写?
 */
public class ZuoK个项目最大profit {
	
	//greedy 贪心方法
	public static int solution(int cost[],int profit[],int k,int capital) {
		PriorityQueue<Integer> orderCost = new PriorityQueue<>();
		PriorityQueue<Integer> orderProfit = new PriorityQueue<>((a,b)-> b - a);
		for(int i : cost)
			orderCost.add(i);
		while(k > 0) {
			while( !orderCost.isEmpty() && capital >= orderCost.peek()) {
				orderProfit.add(profit[orderCost.poll()]);
			}
			if(orderProfit.isEmpty()) {
				break;
			}
			capital += orderProfit.poll();
			k++;
		}
		return capital;
	}
}
